home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
games
/
hitton
/
htn_src.lzh
/
HTN_SRC
/
HTN_INPT.C
< prev
next >
Wrap
Text File
|
2000-07-03
|
5KB
|
203 lines
/* 『ひっとん』 ver.1.00 入力処理 (HTN_INPT.C) 2000 TAU Software */
# include "HTN_DEF.H"
# define KEY_WAIT 16 /* 名前登録用キーウェイト */
# define KEY_WAI2 48 /* 名前登録用キーウェイト */
/*** ジョイ & キーボードの押下チェック ***/
/* [返り値] 入力データ( 各bitとも、1:押している 0:押していない ) */
int JOY0(no)
int no; /* 0:JOY1 1:JOY2 2:JOY1&2 (bit3=1 の時、押続無効無し) */
{
int jd; /* 入力の状態 (返り値用)
( bit 15: [ESC]+[Q](強制終了)
14: [F6] (一時停止)
13: [F10] (タイトル帰還)
12: [TAB]
11- 8:
7:
6,5: B、Aボタン
4:
3-0: 右、左、下、上) */
static int pjd=0; /* 1つ前の入力状態 ( [ESC]+[Q] [F6] [TAB] ) */
int d0,dD;
int d2,d3,d4,d5,d6,d7,d8,d9,dA,dC,dE; /* KEYの押下記録用 */
int s1,s2; /* JOYの状態記録用 */
d0=BITSNS( 0); dD=BITSNS(13);
d2=BITSNS( 2); d3=BITSNS( 3); d4=BITSNS( 4); d5=BITSNS( 5);
d6=BITSNS( 6); d7=BITSNS( 7); d8=BITSNS( 8); d9=BITSNS( 9);
dA=BITSNS(10); dC=BITSNS(12); dE=BITSNS(14); /* KEYの押下状態 */
s1=(~JOYGET(0))&0xFF; s2=(~JOYGET(1))&0xFF; /* JOYの状態 */
d0=((((d0 & d2)&2)|(dD&1))<<14)|((dD&16)<<9); /* [ESC]+[Q] & [F6] & [F10] */
d0|=((d2 & 1)<<12); /* [TAB] */
jd=(~pjd)&d0; /* 押し続けると無効 ( [ESC]+[Q] [F6] [F10] [TAB] ) */
if(no & 8) pjd=0; else pjd=d0; /* 状態の記憶 ( [ESC]+[Q] [F6] [F10] [TAB] ) */
no=(no&7);
if(!(no&1)){ /* JOY1 */
jd|=s1|(((d2&4)|(d5&8))>>2);
jd|=((d3>>4)&4)|((d4<<3)&8);
jd|=((dE<<4)|(d3>>2)|d3|dA|d6)&32;
jd|=((dE<<6)|dA)&64;
}
if(no){ /* JOY2 */
jd|=s2|(((d7|d8)>>4)&1)|(((d7>>5)|(d9>>3))&2);
jd|=(((d7>>1)|(d8>>5))&4)|(((d7>>2)|(d9<<2))&8);
jd|=((dE<<3)|(d9>>1)|(d9<<5))&32;
jd|=((dE<<3)|((d9|d7)>>1))&64;
}
return jd;
}
/*** ジョイ & キーボードの入力 (キーを押し続けた時、無効にする) ***/
int JOYINP0(no)
int no;
{
static int pst[3]={0,0,0};
int st,sd;
sd=JOY0(no+8);
st=(~(*(pst+no)))&sd;
*(pst+no)=sd;
return st;
}
/*** ジョイ & キーボードの入力 (キーを押し続けた時、反応を鈍くする) ***/
int JOYINP1(no)
int no;
{
static int pst[3]={0,0,0};
static int stm[3]={-1,-1,-1};
static int sck[3]={1,1,1};
int st,sd;
if(*(stm+no) == -1) *(stm+no)=ONTIME();
sd=JOY0(no+8);
st=(~(*(pst+no)))&sd;
if((sd&15) != 0){
if(sd == *(pst+no)){
if(D_TIME(*(stm+no)) >= *(sck+no)*KEY_WAI2+KEY_WAIT){
st=(st&0xFFF0)|(sd&15);
*(stm+no)=ONTIME();
*(sck+no)=0;
}
} else { *(stm+no)=ONTIME(); *(sck+no)=1; }
}
*(pst+no)=sd;
return st;
}
/*** 名前入力 ***/
int INP_NAME(pm,st)
int pm;
int st;
{
int st2,no;
unsigned char lp0[]="アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨ++ラリルレロワヲン++゙゚+++ー++++!++++ ++++";
if((no=strchr(lp0,pm)) == NULL) return -1;
no-=(int)lp0;
st2=((st&8)!=0)-((st&4)!=0);
if(st2){
do no=(no+st2+70)%70; while(*(lp0+no) == '+');
return *(lp0+no);
}
st2=((st&2)!=0)-((st&1)!=0);
if(st2){
no=((no/5)*5+st2*5+70)%70;
return *(lp0+no);
}
return -1;
}
# if 0
*** TAUのどーでもいい話!
開発後記にも書きましたが、凄い汚いソースファイルです。
綺麗に直してる時間なんてありゃしないっす。
で、重ね重ねごめんなさーい。っつーことで。
『無限のリヴァイアス』です。
こういうのが見たかったんです。
やっぱ、青春群像でしょう。アニメは。
中学生日記万歳です。(ちと違うか・・・)
SF色弱かったのも私的にはポイント高いっすね!
『ラブひな』
アニメ的にはなかなか面白いと思うんですけど、
こういう、ハーレムラブコメはどうも体が受け付けなくて・・・。
でも、それでも見てるって事は、すごいアニメなんでしょう。
『最終兵器彼女』
漫画ですね。これは。
・・・とんでもないもの描いてくれました。
いろんな意味で。
好きです。こういうの。SF色がもっと薄ければ言うこと無しですます。
『ブギーポップは笑わない』
小説は結構面白いと思うけど。
アニメは、私の頭がついていけなかったからか、
あんまり面白くなかったな。
『Vain Dream』
10年近く前のゲームソフトですね。制作は GLODIA です。
GLODIA のことについて書かれている Web Page を見つけた事がきっかけで、
やり始めました。
エメドラも中々面白かったですけど、これはもう何と言っていいか、
すごいゲームです。ゲームシステムといい、シナリオといい、
最近のゲーム、見習ってねって感じで。
ただ、98エミュだと、DISK IMAGE プロテクト外さなければならないので、
現在停止中。悲し。
68にも移植して欲しかったなっと。
『die Bahn Welt』
これも GLODIA ですね。68オリジナルのゲームです。
上記の GLODIA ページには Vain Dream について情報が充実しているので、
対抗してこいつのページを作ろうかと画策しております。
出来たら見に来てね。
多分、www.fsinet.or.jp/~tau/index.htm っつーページ作ると思う。(予定)
『エスパー魔美』
『宇宙船サジタリウス』
どちらも、DVD化署名やってますね。
私のアニメ暦の中で1、2を争うものです。
両方とも実現するといいな。
ということで、とりとめない話でごめんなさい。
では、いつかまたどこかで。
# endif